#ifndef CYLINDER_PRIMITIVE_H
#define CYLINDER_PRIMITIVE_H

#include "object.h"

class CylinderPrimitive : public Object{
    public:
        CylinderPrimitive(int = 0);
        CylinderPrimitive(const Vector3D &, double, double, int = 0);
        CylinderPrimitive(const Vector3D &, double, double, const Color &, int = 0);
        ~CylinderPrimitive();

        Vector3D getCenter() const;
        void setCenter(const Vector3D &);

        double getRadius() const;
        void setRadius(double);

        double getHeight() const;
        void setHeight(double);

        double volume() const;
        double area() const;

        void draw(bool, bool = false, const Color & = Color(0.0, 0.0,0.0,0.0)) const;
        int classify(Vector3D *) const; //manda os 8 pontos da octree
        void getMinMax(double *, double *, unsigned int) const;

    private:
        Vector3D center;
        double radius;
        double height;
};

#endif
